--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / Sideband.git / files / sbapp / kivymd / uix / refreshlayout / refreshlayout.py
Displaying Raw • Download
sbapp/kivymd/uix/refreshlayout/refreshlayout.py 67a8f61af8bdd2583ef8ed24d6ad80d7e39ae677 (67a8f61a) Text, 9.64 KB
T8b949e"""
Components/RefreshLayout
========================
Example
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.. code-block:: python
from kivy.clock import Clock
from kivy.lang import Builder
from kivy.factory import Factory
from kivy.properties import StringProperty
from kivymd.app import MDApp
from kivymd.uix.button import MDIconButton
from kivymd.icon_definitions import md_icons
from kivymd.uix.list import ILeftBodyTouch, OneLineIconListItem
from kivymd.theming import ThemeManager
from kivymd.utils import asynckivy
Builder.load_string('''
<ItemForList>
text: root.text
IconLeftSampleWidget:
icon: root.icon
<Example@MDFloatLayout>
MDBoxLayout:
orientation: 'vertical'
MDTopAppBar:
title: app.title
md_bg_color: app.theme_cls.primary_color
background_palette: 'Primary'
elevation: 4
left_action_items: [['menu', lambda x: x]]
MDScrollViewRefreshLayout:
id: refresh_layout
refresh_callback: app.refresh_callback
root_layout: root
spinner_color: "brown"
circle_color: "white"
MDGridLayout:
id: box
adaptive_height: True
cols: 1
''')
class IconLeftSampleWidget(ILeftBodyTouch, MDIconButton):
pass
class ItemForList(OneLineIconListItem):
icon = StringProperty()
class Example(MDApp):
title = 'Example Refresh Layout'
screen = None
x = 0
y = 15
def build(self):
self.theme_cls.theme_style = "Dark"
self.theme_cls.primary_palette = "Orange"
self.screen = Factory.Example()
self.set_list()
return self.screen
def set_list(self):
async def set_list():
names_icons_list = list(md_icons.keys())[self.x:self.y]
for name_icon in names_icons_list:
await asynckivy.sleep(0)
self.screen.ids.box.add_widget(
ItemForList(icon=name_icon, text=name_icon))
asynckivy.start(set_list())
def refresh_callback(self, *args):
'''
A method that updates the state of your application
while the spinner remains on the screen.
'''
def refresh_callback(interval):
self.screen.ids.box.clear_widgets()
if self.x == 0:
self.x, self.y = 15, 30
else:
self.x, self.y = 0, 15
self.set_list()
self.screen.ids.refresh_layout.refresh_done()
self.tick = 0
Clock.schedule_once(refresh_callback, 1)
Example().run()
"""
Te6edf3__all__ Tff7b72= Tb4b4b4(Ta5d6ff"Ta5d6ffMDScrollViewRefreshLayoutTa5d6ff"Tb4b4b4,Tb4b4b4)
Tff7b72import T7ee787os
Tff7b72from T7ee787typing Tff7b72import Te6edf3Union
Tff7b72from T7ee787kivyT7ee787.T7ee787animation Tff7b72import Te6edf3Animation
Tff7b72from T7ee787kivyT7ee787.T7ee787coreT7ee787.T7ee787window Tff7b72import Te6edf3Window
Tff7b72from T7ee787kivyT7ee787.T7ee787effectsT7ee787.T7ee787dampedscroll Tff7b72import Te6edf3DampedScrollEffect
Tff7b72from T7ee787kivyT7ee787.T7ee787lang Tff7b72import Te6edf3Builder
Tff7b72from T7ee787kivyT7ee787.T7ee787metrics Tff7b72import Te6edf3dp
Tff7b72from T7ee787kivyT7ee787.T7ee787properties Tff7b72import Tb4b4b4(
Te6edf3ColorPropertyTb4b4b4,
Te6edf3NumericPropertyTb4b4b4,
Te6edf3ObjectPropertyTb4b4b4,
Te6edf3StringPropertyTb4b4b4,
Tb4b4b4)
Tff7b72from T7ee787kivyT7ee787.T7ee787uixT7ee787.T7ee787floatlayout Tff7b72import Te6edf3FloatLayout
Tff7b72from T7ee787kivymd Tff7b72import Te6edf3uix_path
Tff7b72from T7ee787kivymdT7ee787.T7ee787theming Tff7b72import Te6edf3ThemableBehavior
Tff7b72from T7ee787kivymdT7ee787.T7ee787uixT7ee787.T7ee787scrollview Tff7b72import Te6edf3MDScrollView
Tff7b72with Tffa657openTb4b4b4(
Te6edf3osTff7b72.Td2a8ffpathTff7b72.Td2a8ffjoinTb4b4b4(Te6edf3uix_pathTb4b4b4, Ta5d6ff"Ta5d6ffrefreshlayoutTa5d6ff"Tb4b4b4, Ta5d6ff"Ta5d6ffrefreshlayout.kvTa5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3encodingTff7b72=Ta5d6ff"Ta5d6ffutf-8Ta5d6ff"Tb4b4b4,
Tb4b4b4) Tff7b72as Te6edf3kv_fileTb4b4b4:
Te6edf3BuilderTff7b72.Td2a8ffload_stringTb4b4b4(Te6edf3kv_fileTff7b72.Td2a8ffreadTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72class T56d364_RefreshScrollEffectTb4b4b4(Te6edf3DampedScrollEffectTb4b4b4)Tb4b4b4:
T8b949e"""
This class is simply based on DampedScrollEffect.
If you need any documentation please look at
:class:`~kivy.effects.dampedscrolleffect`.
"""
Te6edf3min_scroll_to_reload Tff7b72= Te6edf3NumericPropertyTb4b4b4(Ta5d6ff"Ta5d6ff-100dpTa5d6ff"Tb4b4b4)
T8b949e"""
Minimum overscroll value to reload.
:attr:`min_scroll_to_reload` is a :class:`~kivy.properties.NumericProperty`
and defaults to `'-100dp'`.
"""
Tff7b72def Td2a8ffon_overscrollTb4b4b4(
Tff7b72selfTb4b4b4, Te6edf3instance_refresh_scroll_effectTb4b4b4, Te6edf3overscrollTb4b4b4: Te6edf3UnionTb4b4b4[Tffa657intTb4b4b4, Tffa657floatTb4b4b4]
Tb4b4b4) Tff7b72-Tff7b72> Tffa657boolTb4b4b4:
Tff7b72if Te6edf3overscroll Tff7b72< Tff7b72selfTff7b72.Td2a8ffmin_scroll_to_reloadTb4b4b4:
Te6edf3scroll_view Tff7b72= Tff7b72selfTff7b72.Td2a8fftarget_widgetTff7b72.Td2a8ffparent
Te6edf3scroll_viewTff7b72.Td2a8ff_did_overscroll Tff7b72= Tff7b72True
Tff7b72return Tff7b72True
Tff7b72elseTb4b4b4:
Tff7b72return Tff7b72False
Tff7b72class T56d364MDScrollViewRefreshLayoutTb4b4b4(Te6edf3ThemableBehaviorTb4b4b4, Te6edf3MDScrollViewTb4b4b4)Tb4b4b4:
T8b949e"""
Refresh layout class.
For more information, see in the
:class:`~kivymd.theming.ThemableBehavior` and
:class:`~kivymd.uix.scrollview.MDScrollView`
class documentation.
"""
Te6edf3root_layout Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
The spinner will be attached to this layout.
:attr:`root_layout` is a :class:`~kivy.properties.ObjectProperty`
and defaults to `None`.
"""
Te6edf3refresh_callback Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tb4b4b4)
T8b949e"""
The method that will be called at the on_touch_up event,
provided that the overscroll of the list has been registered.
:attr:`refresh_callback` is a :class:`~kivy.properties.ObjectProperty`
and defaults to `None`.
"""
Te6edf3spinner_color Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tb4b4b4[T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4]Tb4b4b4)
T8b949e"""
Color of the spinner in (r, g, b, a) or string format.
.. versionadded:: 1.2.0
:attr:`spinner_color` is a :class:`~kivy.properties.ColorProperty`
and defaults to `[1, 1, 1, 1]`.
"""
Te6edf3circle_color Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tff7b72NoneTb4b4b4)
T8b949e"""
Color of the ellipse around the spinner in (r, g, b, a) or string format.
.. versionadded:: 1.2.0
:attr:`circle_color` is a :class:`~kivy.properties.ColorProperty`
and defaults to `None`.
"""
Te6edf3show_transition Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6ff"Ta5d6ffout_elasticTa5d6ff"Tb4b4b4)
T8b949e"""
Transition of the spinner's opening.
.. versionadded:: 1.2.0
:attr:`show_transition` is a :class:`~kivy.properties.StringProperty`
and defaults to `'out_elastic'`.
"""
Te6edf3show_duration Tff7b72= Te6edf3NumericPropertyTb4b4b4(T79c0ff0.8Tb4b4b4)
T8b949e"""
Duration of the spinner display.
.. versionadded:: 1.2.0
:attr:`show_duration` is a :class:`~kivy.properties.NumericProperty`
and defaults to `0.8`.
"""
Te6edf3hide_transition Tff7b72= Te6edf3StringPropertyTb4b4b4(Ta5d6ff"Ta5d6ffout_elasticTa5d6ff"Tb4b4b4)
T8b949e"""
Transition of hiding the spinner.
.. versionadded:: 1.2.0
:attr:`hide_transition` is a :class:`~kivy.properties.StringProperty`
and defaults to `'out_elastic'`.
"""
Te6edf3hide_duration Tff7b72= Te6edf3NumericPropertyTb4b4b4(T79c0ff0.8Tb4b4b4)
T8b949e"""
Duration of hiding the spinner.
.. versionadded:: 1.2.0
:attr:`hide_duration` is a :class:`~kivy.properties.NumericProperty`
and defaults to `0.8`.
"""
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Te6edf3argsTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffcircle_colorTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffcircle_color Tff7b72= Tff7b72selfTff7b72.Td2a8fftheme_clsTff7b72.Td2a8ffprimary_dark
Tff7b72selfTff7b72.Td2a8ffeffect_cls Tff7b72= Te6edf3_RefreshScrollEffect
Tff7b72selfTff7b72.Td2a8ff_work_spinner Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ff_did_overscroll Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ffrefresh_spinner Tff7b72= Tff7b72None
Tff7b72def Td2a8ffon_touch_upTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4)Tb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ff_did_overscroll Tff7b72and Tff7b72not Tff7b72selfTff7b72.Td2a8ff_work_spinnerTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffrefresh_callbackTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrefresh_callbackTb4b4b4(Tb4b4b4)
Tff7b72if Tff7b72not Tff7b72selfTff7b72.Td2a8ffrefresh_spinnerTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrefresh_spinner Tff7b72= Te6edf3RefreshSpinnerTb4b4b4(
Te6edf3_refresh_layoutTff7b72=Tff7b72selfTb4b4b4,
Te6edf3spinner_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffspinner_colorTb4b4b4,
Te6edf3circle_colorTff7b72=Tff7b72selfTff7b72.Td2a8ffcircle_colorTb4b4b4,
Te6edf3show_transitionTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_transitionTb4b4b4,
Te6edf3show_durationTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_durationTb4b4b4,
Te6edf3hide_transitionTff7b72=Tff7b72selfTff7b72.Td2a8ffhide_transitionTb4b4b4,
Te6edf3hide_durationTff7b72=Tff7b72selfTff7b72.Td2a8ffhide_durationTb4b4b4,
Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ffroot_layoutTff7b72.Td2a8ffadd_widgetTb4b4b4(Tff7b72selfTff7b72.Td2a8ffrefresh_spinnerTb4b4b4)
Tff7b72selfTff7b72.Td2a8ffrefresh_spinnerTff7b72.Td2a8ffstart_anim_spinnerTb4b4b4(Tb4b4b4)
Tff7b72selfTff7b72.Td2a8ff_work_spinner Tff7b72= Tff7b72True
Tff7b72selfTff7b72.Td2a8ff_did_overscroll Tff7b72= Tff7b72False
Tff7b72return Tff7b72True
Tff7b72return Tffa657superTb4b4b4(Tb4b4b4)Tff7b72.Td2a8ffon_touch_upTb4b4b4(Tff7b72*Te6edf3argsTb4b4b4)
Tff7b72def Td2a8ffrefresh_doneTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Tff7b72if Tff7b72selfTff7b72.Td2a8ffrefresh_spinnerTb4b4b4:
Tff7b72selfTff7b72.Td2a8ffrefresh_spinnerTff7b72.Td2a8ffhide_anim_spinnerTb4b4b4(Tb4b4b4)
Tff7b72class T56d364RefreshSpinnerTb4b4b4(Te6edf3ThemableBehaviorTb4b4b4, Te6edf3FloatLayoutTb4b4b4)Tb4b4b4:
T8b949e# Color of the spinner in (r, g, b, a) or string format.
Te6edf3spinner_color Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tb4b4b4[T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4, T79c0ff1Tb4b4b4]Tb4b4b4)
T8b949e# Color of the ellipse around the spinner in (r, g, b, a) or string format.
Te6edf3circle_color Tff7b72= Te6edf3ColorPropertyTb4b4b4(Tb4b4b4)
T8b949e# Transition of the spinner's opening.
Te6edf3show_transition Tff7b72= Te6edf3StringPropertyTb4b4b4(Tb4b4b4)
T8b949e# The duration of the spinner display.
Te6edf3show_duration Tff7b72= Te6edf3NumericPropertyTb4b4b4(T79c0ff0.8Tb4b4b4)
T8b949e# Transition of hiding the spinner.
Te6edf3hide_transition Tff7b72= Te6edf3StringPropertyTb4b4b4(Tb4b4b4)
T8b949e# Duration of hiding the spinner.
Te6edf3hide_duration Tff7b72= Te6edf3NumericPropertyTb4b4b4(T79c0ff0.8Tb4b4b4)
T8b949e# kivymd.refreshlayout.MDScrollViewRefreshLayout object
Te6edf3_refresh_layout Tff7b72= Te6edf3ObjectPropertyTb4b4b4(Tb4b4b4)
Tff7b72def Td2a8ffstart_anim_spinnerTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3spinner Tff7b72= Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffbody_spinner
Te6edf3AnimationTb4b4b4(
Te6edf3yTff7b72=Te6edf3spinnerTff7b72.Td2a8ffy Tff7b72- Tff7b72selfTff7b72.Td2a8fftheme_clsTff7b72.Td2a8ffstandard_increment Tff7b72* T79c0ff2 Tff7b72+ Te6edf3dpTb4b4b4(T79c0ff10Tb4b4b4)Tb4b4b4,
Te6edf3dTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_durationTb4b4b4,
Te6edf3tTff7b72=Tff7b72selfTff7b72.Td2a8ffshow_transitionTb4b4b4,
Tb4b4b4)Tff7b72.Td2a8ffstartTb4b4b4(Te6edf3spinnerTb4b4b4)
Tff7b72def Td2a8ffhide_anim_spinnerTb4b4b4(Tff7b72selfTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3spinner Tff7b72= Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffbody_spinner
Te6edf3anim Tff7b72= Te6edf3AnimationTb4b4b4(
Te6edf3yTff7b72=Te6edf3WindowTff7b72.Td2a8ffheightTb4b4b4, Te6edf3dTff7b72=Tff7b72selfTff7b72.Td2a8ffhide_durationTb4b4b4, Te6edf3tTff7b72=Tff7b72selfTff7b72.Td2a8ffhide_transition
Tb4b4b4)
Te6edf3animTff7b72.Td2a8ffbindTb4b4b4(Te6edf3on_completeTff7b72=Tff7b72selfTff7b72.Td2a8ffset_spinnerTb4b4b4)
Te6edf3animTff7b72.Td2a8ffstartTb4b4b4(Te6edf3spinnerTb4b4b4)
Tff7b72def Td2a8ffset_spinnerTb4b4b4(Tff7b72selfTb4b4b4, Tff7b72*Te6edf3argsTb4b4b4) Tff7b72-Tff7b72> Tff7b72NoneTb4b4b4:
Te6edf3body_spinner Tff7b72= Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffbody_spinner
Te6edf3body_spinnerTff7b72.Td2a8ffsize Tff7b72= Tb4b4b4(Te6edf3dpTb4b4b4(T79c0ff46Tb4b4b4)Tb4b4b4, Te6edf3dpTb4b4b4(T79c0ff46Tb4b4b4)Tb4b4b4)
Te6edf3body_spinnerTff7b72.Td2a8ffy Tff7b72= Te6edf3WindowTff7b72.Td2a8ffheight
Te6edf3body_spinnerTff7b72.Td2a8ffopacity Tff7b72= T79c0ff1
Te6edf3spinner Tff7b72= Tff7b72selfTff7b72.Td2a8ffidsTff7b72.Td2a8ffspinner
Te6edf3spinnerTff7b72.Td2a8ffsize Tff7b72= Tb4b4b4(Te6edf3dpTb4b4b4(T79c0ff30Tb4b4b4)Tb4b4b4, Te6edf3dpTb4b4b4(T79c0ff30Tb4b4b4)Tb4b4b4)
Te6edf3spinnerTff7b72.Td2a8ffopacity Tff7b72= T79c0ff1
Tff7b72selfTff7b72.Td2a8ff_refresh_layoutTff7b72.Td2a8ff_work_spinner Tff7b72= Tff7b72False
Tff7b72selfTff7b72.Td2a8ff_refresh_layoutTff7b72.Td2a8ff_did_overscroll Tff7b72= Tff7b72False
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────